<?php
/**
 * Cache 管理者类
 * 
 * 负责初始化并存放所有的Cache类。
 * 
 * @category   Framework
 * @package    Cache
 * @author     Xinze <xinze@live.cn>
 * @copyright  Copyright (c) 2010, 黄新泽
 * @version    1.0
 * @todo       
 */
final class Zero_Cache
{
    /**
     * 存储已经实例后的Cache对象
     *
     * @staticvar Zero_Cache_Memcache|Cache_Lite
     */
    static $cache = array();

    /**
     * 获得配置的Cache实例
     *
     * @param string $name 缓存配置key
     * @return Zero_Cache_Memcache|Cache_Lite  
     */
    static public function create($name)
    {
        if (!isset(self::$cache[$name]))
        {
            $config_cache = Zero_Registry::get('config_cache');

            if (2 == $config_cache[$name]['cacheType'])
            {
                //单例模式，无论如何设置，都是唯一的一个memcache
                Zero_Cache_Memcache::$expire = $config_cache[$name]['lifeTime'];

                if (!isset(self::$cache['_memcache_']))
                {
                    self::$cache['_memcache_'] = &Zero_Cache_Memcache::getInstance();
                }

                return self::$cache['_memcache_'];
            }
            else
            {
                self::$cache[$name] = new Cache_Lite($config_cache[$name]);
            }
        }

        return self::$cache[$name];
    }

    private function __construct()
    {
    }
}
?>